<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>系统吞吐量优化指南 | 技术小馆</title>
    <link href="https://cdn.staticfile.org/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
    <link href="https://cdn.staticfile.org/tailwindcss/2.2.19/tailwind.min.css" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&display=swap" rel="stylesheet">
    <script src="https://cdn.jsdelivr.net/npm/mermaid@latest/dist/mermaid.min.js"></script>
    <style>
        body {
            font-family: 'Noto Sans SC', Tahoma, Arial, Roboto, "Droid Sans", "Helvetica Neue", "Droid Sans Fallback", "Heiti SC", "Hiragino Sans GB", Simsun, sans-serif;
            color: #333;
            line-height: 1.6;
        }
        h1, h2, h3, h4 {
            font-family: 'Noto Serif SC', serif;
            font-weight: 600;
        }
        .hero-gradient {
            background: linear-gradient(135deg, #6e8efb 0%, #a777e3 100%);
        }
        .code-block {
            background-color: #2d2d2d;
            border-left: 4px solid #a777e3;
        }
        .card-hover {
            transition: transform 0.3s ease, box-shadow 0.3s ease;
        }
        .card-hover:hover {
            transform: translateY(-5px);
            box-shadow: 0 10px 25px rgba(0,0,0,0.1);
        }
        .highlight {
            position: relative;
        }
        .highlight:after {
            content: '';
            position: absolute;
            bottom: 0;
            left: 0;
            width: 100%;
            height: 30%;
            background-color: rgba(167, 119, 227, 0.2);
            z-index: -1;
            transition: height 0.3s ease;
        }
        .highlight:hover:after {
            height: 50%;
        }
    </style>
</head>
<body class="bg-gray-50">
    <!-- Hero Section -->
    <section class="hero-gradient text-white py-20 md:py-32 px-4 md:px-0">
        <div class="container mx-auto max-w-5xl text-center">
            <div class="inline-block px-3 py-1 mb-4 text-sm font-semibold bg-white bg-opacity-20 rounded-full backdrop-blur-sm">
                <i class="fas fa-bolt mr-2"></i>性能优化系列
            </div>
            <h1 class="text-4xl md:text-5xl font-bold mb-6 leading-tight">系统吞吐量优化完全指南</h1>
            <p class="text-xl md:text-2xl max-w-3xl mx-auto opacity-90 mb-8">探索高并发环境下提升系统处理能力的关键技术与实践</p>
            <div class="flex justify-center space-x-4">
                <a href="#what-is" class="px-6 py-3 bg-white text-purple-700 font-medium rounded-full hover:bg-opacity-90 transition">
                    <i class="fas fa-book-open mr-2"></i>开始阅读
                </a>
                <a href="#case-study" class="px-6 py-3 border border-white border-opacity-30 text-white font-medium rounded-full hover:bg-white hover:bg-opacity-10 transition">
                    <i class="fas fa-laptop-code mr-2"></i>实战案例
                </a>
            </div>
        </div>
    </section>

    <!-- Main Content -->
    <main class="container mx-auto max-w-5xl px-4 md:px-0 py-12">
        <!-- What is Throughput -->
        <section id="what-is" class="mb-20">
            <div class="flex items-center mb-8">
                <div class="w-12 h-12 rounded-full bg-purple-100 flex items-center justify-center mr-4">
                    <i class="fas fa-tachometer-alt text-purple-600 text-xl"></i>
                </div>
                <h2 class="text-3xl font-bold">什么是系统吞吐量？</h2>
            </div>
            
            <div class="grid md:grid-cols-2 gap-8 mb-12">
                <div class="bg-white p-8 rounded-xl shadow-md card-hover">
                    <h3 class="text-2xl font-semibold mb-4 text-purple-700">吞吐量的定义</h3>
                    <p class="text-gray-700 mb-4">吞吐量指的是系统单位时间内可以处理的请求或任务的数量。它通常以每秒请求数（Requests Per Second，RPS）或者每秒事务数（Transactions Per Second，TPS）来衡量。</p>
                    <div class="bg-blue-50 border-l-4 border-blue-400 p-4 rounded">
                        <p class="text-blue-800"><i class="fas fa-info-circle mr-2"></i>吞吐量越高，表示系统处理能力越强，在高并发环境下尤为关键。</p>
                    </div>
                </div>
                <div class="bg-white p-8 rounded-xl shadow-md card-hover">
                    <h3 class="text-2xl font-semibold mb-4 text-purple-700">吞吐量的影响因素</h3>
                    <ul class="space-y-3 text-gray-700">
                        <li class="flex items-start">
                            <i class="fas fa-microchip text-purple-500 mt-1 mr-3"></i>
                            <span><span class="font-medium">硬件资源：</span>如CPU、内存、磁盘和网络带宽等</span>
                        </li>
                        <li class="flex items-start">
                            <i class="fas fa-project-diagram text-purple-500 mt-1 mr-3"></i>
                            <span><span class="font-medium">软件架构：</span>架构选择、负载均衡、缓存机制等</span>
                        </li>
                        <li class="flex items-start">
                            <i class="fas fa-users text-purple-500 mt-1 mr-3"></i>
                            <span><span class="font-medium">并发处理能力：</span>高并发场景下的请求处理</span>
                        </li>
                        <li class="flex items-start">
                            <i class="fas fa-hdd text-purple-500 mt-1 mr-3"></i>
                            <span><span class="font-medium">I/O瓶颈：</span>数据库查询、文件读写等操作</span>
                        </li>
                    </ul>
                </div>
            </div>

            <div class="bg-white rounded-xl shadow-md overflow-hidden mb-12">
                <div class="p-6 md:p-8">
                    <h3 class="text-2xl font-semibold mb-6 text-purple-700">吞吐量与系统性能关系图</h3>
                    <div class="mermaid">
                        graph TD
                            A[用户请求] --> B[Web服务器]
                            B --> C[应用服务器]
                            C --> D[数据库]
                            D --> C
                            C --> B
                            B --> A
                            style A fill:#f5f5f5,stroke:#666
                            style B fill:#e3f2fd,stroke:#2196f3
                            style C fill:#e8f5e9,stroke:#4caf50
                            style D fill:#fff3e0,stroke:#ff9800
                    </div>
                </div>
            </div>
        </section>

        <!-- Optimization Methods -->
        <section id="methods" class="mb-20">
            <div class="flex items-center mb-8">
                <div class="w-12 h-12 rounded-full bg-purple-100 flex items-center justify-center mr-4">
                    <i class="fas fa-rocket text-purple-600 text-xl"></i>
                </div>
                <h2 class="text-3xl font-bold">提升系统吞吐量的常见方法</h2>
            </div>

            <!-- Method 1 -->
            <div class="mb-12">
                <h3 class="text-2xl font-semibold mb-6 highlight inline-block">使用多线程和并发处理</h3>
                <p class="text-gray-700 mb-6">多线程和并发编程是提升吞吐量的基础技术之一。在多线程的环境下，多个线程可以同时处理多个任务，不需要等待其他任务完成。</p>
                
                <div class="grid md:grid-cols-2 gap-6 mb-6">
                    <div class="bg-gray-800 rounded-lg overflow-hidden code-block">
                        <div class="px-4 py-3 bg-gray-700 text-gray-300 flex items-center">
                            <div class="w-3 h-3 rounded-full bg-red-500 mr-2"></div>
                            <div class="w-3 h-3 rounded-full bg-yellow-500 mr-2"></div>
                            <div class="w-3 h-3 rounded-full bg-green-500 mr-2"></div>
                            <span class="text-sm ml-2">Java - ThreadPool示例</span>
                        </div>
                        <pre class="p-4 text-gray-200 overflow-x-auto"><code>ExecutorService executorService = Executors.newFixedThreadPool(10);

for (int i = 0; i < 100; i++) {
    executorService.submit(() -> {
        // 执行任务
        System.out.println(Thread.currentThread().getName() + " 执行任务");
    });
}</code></pre>
                    </div>
                    <div class="bg-gray-800 rounded-lg overflow-hidden code-block">
                        <div class="px-4 py-3 bg-gray-700 text-gray-300 flex items-center">
                            <div class="w-3 h-3 rounded-full bg-red-500 mr-2"></div>
                            <div class="w-3 h-3 rounded-full bg-yellow-500 mr-2"></div>
                            <div class="w-3 h-3 rounded-full bg-green-500 mr-2"></div>
                            <span class="text-sm ml-2">Java - 并发容器示例</span>
                        </div>
                        <pre class="p-4 text-gray-200 overflow-x-auto"><code>ConcurrentHashMap&lt;String, String&gt; map = new ConcurrentHashMap<>();
map.put("key", "value");</code></pre>
                    </div>
                </div>
                <div class="bg-yellow-50 border-l-4 border-yellow-400 p-4 rounded">
                    <p class="text-yellow-800"><i class="fas fa-lightbulb mr-2"></i><span class="font-medium">专业建议：</span>合理设置线程池大小是关键，过大可能导致上下文切换开销，过小则无法充分利用CPU资源。</p>
                </div>
            </div>

            <!-- Method 2 -->
            <div class="mb-12">
                <h3 class="text-2xl font-semibold mb-6 highlight inline-block">使用异步处理提升吞吐量</h3>
                <p class="text-gray-700 mb-6">异步处理是一种避免阻塞的技术，它可以在等待某个任务完成的同时，继续执行其他任务。在很多场景下，尤其是涉及I/O操作时，使用异步执行可以显著提高吞吐量。</p>
                
                <div class="bg-gray-800 rounded-lg overflow-hidden code-block mb-6">
                    <div class="px-4 py-3 bg-gray-700 text-gray-300 flex items-center">
                        <div class="w-3 h-3 rounded-full bg-red-500 mr-2"></div>
                        <div class="w-3 h-3 rounded-full bg-yellow-500 mr-2"></div>
                        <div class="w-3 h-3 rounded-full bg-green-500 mr-2"></div>
                        <span class="text-sm ml-2">Java - CompletableFuture示例</span>
                    </div>
                    <pre class="p-4 text-gray-200 overflow-x-auto"><code>CompletableFuture.supplyAsync(() -> {
    // 模拟任务1
    return "任务1完成";
}).thenApply(result -> {
    // 任务2
    System.out.println(result);
    return "任务2完成";
}).thenAccept(result -> {
    System.out.println(result);
});</code></pre>
                </div>
                
                <div class="grid md:grid-cols-2 gap-6">
                    <div class="bg-white p-6 rounded-xl shadow-md card-hover">
                        <div class="flex items-center mb-4">
                            <div class="w-10 h-10 rounded-full bg-purple-100 flex items-center justify-center mr-3">
                                <i class="fas fa-clock text-purple-600"></i>
                            </div>
                            <h4 class="text-xl font-semibold">异步I/O操作</h4>
                        </div>
                        <p class="text-gray-700">使用异步I/O可以让程序在等待I/O操作完成时，继续执行其他任务。例如，Java的NIO库支持异步文件读写和网络通信。</p>
                    </div>
                    <div class="bg-white p-6 rounded-xl shadow-md card-hover">
                        <div class="flex items-center mb-4">
                            <div class="w-10 h-10 rounded-full bg-purple-100 flex items-center justify-center mr-3">
                                <i class="fas fa-tasks text-purple-600"></i>
                            </div>
                            <h4 class="text-xl font-semibold">任务链式调用</h4>
                        </div>
                        <p class="text-gray-700">CompletableFuture提供了一个高效的异步API，支持任务链式调用，让多个任务可以并行执行，提高系统吞吐量。</p>
                    </div>
                </div>
            </div>

            <!-- Method 3 -->
            <div class="mb-12">
                <h3 class="text-2xl font-semibold mb-6 highlight inline-block">数据库优化</h3>
                <p class="text-gray-700 mb-6">在很多系统中，数据库往往是瓶颈所在。优化数据库访问，尤其是减少不必要的查询和提高查询效率，是提升系统吞吐量的关键。</p>
                
                <div class="grid md:grid-cols-2 gap-6 mb-8">
                    <div class="bg-white p-6 rounded-xl shadow-md card-hover">
                        <h4 class="text-xl font-semibold mb-4 text-purple-700">使用缓存技术</h4>
                        <p class="text-gray-700 mb-4">数据库查询通常会对性能造成较大的影响，使用缓存技术可以有效减轻数据库的负担。</p>
                        <div class="bg-gray-800 rounded-lg overflow-hidden code-block">
                            <div class="px-4 py-3 bg-gray-700 text-gray-300 flex items-center">
                                <div class="w-3 h-3 rounded-full bg-red-500 mr-2"></div>
                                <div class="w-3 h-3 rounded-full bg-yellow-500 mr-2"></div>
                                <div class="w-3 h-3 rounded-full bg-green-500 mr-2"></div>
                                <span class="text-sm ml-2">Spring Cache示例</span>
                            </div>
                            <pre class="p-4 text-gray-200 overflow-x-auto"><code>@Cacheable("userCache")
public User getUserById(int id) {
    return userRepository.findById(id);
}</code></pre>
                        </div>
                    </div>
                    <div class="bg-white p-6 rounded-xl shadow-md card-hover">
                        <h4 class="text-xl font-semibold mb-4 text-purple-700">优化数据库索引</h4>
                        <p class="text-gray-700 mb-4">数据库索引的合理设计能够极大提高查询效率，减少全表扫描带来的性能问题。</p>
                        <div class="flex items-center text-sm bg-blue-50 p-3 rounded-lg">
                            <i class="fas fa-check-circle text-blue-500 text-xl mr-3"></i>
                            <span>对查询条件频繁使用的字段添加索引</span>
                        </div>
                        <div class="flex items-center text-sm bg-blue-50 p-3 rounded-lg mt-3">
                            <i class="fas fa-check-circle text-blue-500 text-xl mr-3"></i>
                            <span>避免过度索引，因为索引会增加写入开销</span>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Method 4 -->
            <div class="mb-12">
                <h3 class="text-2xl font-semibold mb-6 highlight inline-block">负载均衡与分布式架构</h3>
                
                <div class="grid md:grid-cols-2 gap-8">
                    <div>
                        <h4 class="text-xl font-semibold mb-4 text-purple-700">负载均衡</h4>
                        <p class="text-gray-700 mb-4">负载均衡通过将请求分发到多台服务器上，实现请求的分摊，避免某台服务器的过载。</p>
                        <div class="bg-white p-5 rounded-lg shadow-sm border border-gray-100">
                            <div class="flex justify-between items-center mb-3">
                                <span class="font-medium">常见负载均衡算法：</span>
                            </div>
                            <ul class="space-y-2">
                                <li class="flex items-center">
                                    <i class="fas fa-circle-notch text-purple-500 text-xs mr-2"></i>
                                    <span>轮询 (Round Robin)</span>
                                </li>
                                <li class="flex items-center">
                                    <i class="fas fa-circle-notch text-purple-500 text-xs mr-2"></i>
                                    <span>加权轮询 (Weighted Round Robin)</span>
                                </li>
                                <li class="flex items-center">
                                    <i class="fas fa-circle-notch text-purple-500 text-xs mr-2"></i>
                                    <span>最少连接 (Least Connections)</span>
                                </li>
                                <li class="flex items-center">
                                    <i class="fas fa-circle-notch text-purple-500 text-xs mr-2"></i>
                                    <span>IP哈希 (IP Hash)</span>
                                </li>
                            </ul>
                        </div>
                    </div>
                    <div>
                        <h4 class="text-xl font-semibold mb-4 text-purple-700">分布式架构</h4>
                        <p class="text-gray-700 mb-4">分布式架构将不同的服务拆分到不同的节点上，进行并行处理。通过分布式架构，可以将计算任务拆解到多个机器上。</p>
                        <div class="bg-white p-5 rounded-lg shadow-sm border border-gray-100">
                            <div class="flex items-center mb-3">
                                <i class="fas fa-cube text-purple-500 mr-2"></i>
                                <span class="font-medium">微服务架构优势：</span>
                            </div>
                            <ul class="space-y-2">
                                <li class="flex items-start">
                                    <i class="fas fa-check-circle text-green-500 text-xs mt-1 mr-2"></i>
                                    <span>服务独立部署和扩展</span>
                                </li>
                                <li class="flex items-start">
                                    <i class="fas fa-check-circle text-green-500 text-xs mt-1 mr-2"></i>
                                    <span>技术栈灵活性</span>
                                </li>
                                <li class="flex items-start">
                                    <i class="fas fa-check-circle text-green-500 text-xs mt-1 mr-2"></i>
                                    <span>故障隔离</span>
                                </li>
                            </ul>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Method 5 -->
            <div class="mb-12">
                <h3 class="text-2xl font-semibold mb-6 highlight inline-block">使用消息队列异步处理请求</h3>
                <p class="text-gray-700 mb-6">在高并发的场景下，消息队列可以帮助我们将请求异步化，避免瞬间的大量请求对系统造成过大的压力。</p>
                
                <div class="bg-gray-800 rounded-lg overflow-hidden code-block mb-6">
                    <div class="px-4 py-3 bg-gray-700 text-gray-300 flex items-center">
                        <div class="w-3 h-3 rounded-full bg-red-500 mr-2"></div>
                        <div class="w-3 h-3 rounded-full bg-yellow-500 mr-2"></div>
                        <div class="w-3 h-3 rounded-full bg-green-500 mr-2"></div>
                        <span class="text-sm ml-2">RabbitMQ示例</span>
                    </div>
                    <pre class="p-4 text-gray-200 overflow-x-auto"><code>// 生产者
rabbitTemplate.convertAndSend("taskQueue", "任务内容");

// 消费者
@RabbitListener(queues = "taskQueue")
public void processTask(String task) {
    // 处理任务
}</code></pre>
                </div>
                
                <div class="grid md:grid-cols-3 gap-4">
                    <div class="bg-white p-4 rounded-lg shadow-sm text-center">
                        <div class="w-12 h-12 mx-auto mb-3 rounded-full bg-purple-100 flex items-center justify-center">
                            <i class="fas fa-rabbit text-purple-600"></i>
                        </div>
                        <h4 class="font-semibold mb-1">RabbitMQ</h4>
                        <p class="text-sm text-gray-600">可靠的消息队列，支持多种协议</p>
                    </div>
                    <div class="bg-white p-4 rounded-lg shadow-sm text-center">
                        <div class="w-12 h-12 mx-auto mb-3 rounded-full bg-purple-100 flex items-center justify-center">
                            <i class="fab fa-kickstarter-k text-purple-600"></i>
                        </div>
                        <h4 class="font-semibold mb-1">Kafka</h4>
                        <p class="text-sm text-gray-600">高吞吐量分布式消息系统</p>
                    </div>
                    <div class="bg-white p-4 rounded-lg shadow-sm text-center">
                        <div class="w-12 h-12 mx-auto mb-3 rounded-full bg-purple-100 flex items-center justify-center">
                            <i class="fas fa-stream text-purple-600"></i>
                        </div>
                        <h4 class="font-semibold mb-1">RocketMQ</h4>
                        <p class="text-sm text-gray-600">阿里巴巴开源的分布式消息队列</p>
                    </div>
                </div>
            </div>
        </section>

        <!-- Case Study -->
        <section id="case-study" class="mb-20">
            <div class="flex items-center mb-8">
                <div class="w-12 h-12 rounded-full bg-purple-100 flex items-center justify-center mr-4">
                    <i class="fas fa-laptop-code text-purple-600 text-xl"></i>
                </div>
                <h2 class="text-3xl font-bold">实战案例：电商系统吞吐量优化</h2>
            </div>
            
            <div class="bg-white rounded-xl shadow-md overflow-hidden mb-8">
                <div class="p-6 md:p-8">
                    <h3 class="text-2xl font-semibold mb-6 text-purple-700">异步订单处理流程</h3>
                    <div class="mermaid">
                        graph LR
                            A[用户下单] --> B[订单服务]
                            B --> C[消息队列 RabbitMQ]
                            C --> D[库存服务]
                            C --> E[支付服务]
                            C --> F[物流服务]
                            D --> G[更新库存]
                            E --> H[处理支付]
                            F --> I[安排发货]
                            style A fill:#f5f5f5,stroke:#666
                            style B fill:#bbdefb,stroke:#2196f3
                            style C fill:#d1c4e9,stroke:#7e57c2
                            style D fill:#c8e6c9,stroke#4caf50
                            style E fill#fff9c4,stroke#ffeb3b
                            style F fill#ffccbc,stroke#ff7043
                    </div>
                </div>
            </div>
            
            <div class="grid md:grid-cols-2 gap-6">
                <div class="bg-white p-6 rounded-xl shadow-md card-hover">
                    <h4 class="text-xl font-semibold mb-4 text-purple-700">优化前的同步流程</h4>
                    <ul class="space-y-3 text-gray-700">
                        <li class="flex items-start">
                            <i class="fas fa-times-circle text-red-500 mt-1 mr-3"></i>
                            <span>用户下单后同步等待所有操作完成</span>
                        </li>
                        <li class="flex items-start">
                            <i class="fas fa-times-circle text-red-500 mt-1 mr-3"></i>
                            <span>高并发时系统响应缓慢</span>
                        </li>
                        <li class="flex items-start">
                            <i class="fas fa-times-circle text-red-500 mt-1 mr-3"></i>
                            <span>任一服务故障导致整个流程失败</span>
                        </li>
                    </ul>
                </div>
                <div class="bg-white p-6 rounded-xl shadow-md card-hover">
                    <h4 class="text-xl font-semibold mb-4 text-purple-700">优化后的异步流程</h4>
                    <ul class="space-y-3 text-gray-700">
                        <li class="flex items-start">
                            <i class="fas fa-check-circle text-green-500 mt-1 mr-3"></i>
                            <span>订单信息通过消息队列异步处理</span>
                        </li>
                        <li class="flex items-start">
                            <i class="fas fa-check-circle text-green-500 mt-1 mr-3"></i>
                            <span>各服务并行处理不同任务</span>
                        </li>
                        <li class="flex items-start">
                            <i class="fas fa-check-circle text-green-500 mt-1 mr-3"></i>
                            <span>系统吞吐量提升3-5倍</span>
                        </li>
                    </ul>
                </div>
            </div>
        </section>

        <!-- Summary -->
        <section class="bg-purple-50 rounded-xl p-8 mb-12">
            <h2 class="text-2xl font-semibold mb-6 text-purple-800">关键要点总结</h2>
            <div class="grid md:grid-cols-2 gap-6">
                <div>
                    <h3 class="text-xl font-medium mb-3 text-purple-700">技术选择</h3>
                    <ul class="space-y-2">
                        <li class="flex items-start">
                            <i class="fas fa-check text-purple-500 mt-1 mr-3"></i>
                            <span>多线程和并发编程是基础</span>
                        </li>
                        <li class="flex items-start">
                            <i class="fas fa-check text-purple-500 mt-1 mr-3"></i>
                            <span>异步处理是提高吞吐量的关键</span>
                        </li>
                        <li class="flex items-start">
                            <i class="fas fa-check text-purple-500 mt-1 mr-3"></i>
                            <span>数据库优化往往能带来显著提升</span>
                        </li>
                    </ul>
                </div>
                <div>
                    <h3 class="text-xl font-medium mb-3 text-purple-700">架构考虑</h3>
                    <ul class="space-y-2">
                        <li class="flex items-start">
                            <i class="fas fa-check text-purple-500 mt-1 mr-3"></i>
                            <span>合理使用缓存减轻数据库压力</span>
                        </li>
                        <li class="flex items-start">
                            <i class="fas fa-check text-purple-500 mt-1 mr-3"></i>
                            <span>负载均衡实现水平扩展</span>
                        </li>
                        <li class="flex items-start">
                            <i class="fas fa-check text-purple-500 mt-1 mr-3"></i>
                            <span>消息队列解耦系统组件</span>
                        </li>
                    </ul>
                </div>
            </div>
        </section>
    </main>

    <!-- Footer -->
    <footer class="bg-gray-900 text-gray-300 py-12">
        <div class="container mx-auto max-w-5xl px-4 md:px-0">
            <div class="flex flex-col md:flex-row justify-between items-center">
                <div class="mb-4 md:mb-0">
                    <h3 class="text-xl font-semibold text-white mb-2">技术小馆</h3>
                    <p class="text-gray-400">专注于分享高质量技术内容</p>
                </div>
                <div>
                    <a href="http://www.yuque.com/jtostring" class="text-gray-300 hover:text-white transition flex items-center">
                        <i class="fas fa-globe mr-2"></i> http://www.yuque.com/jtostring
                    </a>
                </div>
            </div>
            <div class="border-t border-gray-800 mt-8 pt-8 text-center text-gray-500 text-sm">
                &copy; 2023 技术小馆 版权所有
            </div>
        </div>
    </footer>

    <script>
        mermaid.initialize({
            startOnLoad: true,
            theme: 'default',
            flowchart: {
                useMaxWidth: true,
                htmlLabels: true,
                curve: 'basis'
            }
        });
    </script>
</body>
</html>